/*
 * Projeto idealizado para ensino interativo com uso de recursos Flash e Java
 * O uso destes codigos eh de extrema restricao, valendo dos direitos dos seus
 * desenvolvedores
 *
 * @author Fabricio Silva
 */
package br.com.dimensaointerativo.controller;

import br.com.dimensaointerativo.dao.DAOException;
import br.com.dimensaointerativo.dto.AlunoDTO;
import br.com.dimensaointerativo.negocioDAO.AlunoDAO;
import br.com.dimensaointerativo.recursos.RecursosUteis;
import java.util.Collection;
import java.util.LinkedList;

/**
 *
 * @author Fabricio Silva, Michel Frank
 */
public class AlunoController {

    /**
     * Registrar os alunos a partir da tela de cadastro de aluno
     * @param alunoDTO
     */
    public void registrarAluno(AlunoDTO alunoDTO) {
        try {
            AlunoDAO alunoDAO = new AlunoDAO();
            /*
             * Tratando senha
             */
            alunoDTO.setSenha(RecursosUteis.gerarHash(alunoDTO.getSenha()));
            alunoDAO.insert(alunoDTO);
        } catch (DAOException e) {
            e.printStackTrace();
        }
    }

    /*
     * Controller para trabalhar como intermediario na atualizacoes
     * de informacoes sobre o aluno
     */
    public void alterarAluno(AlunoDTO alunoDTO) {
        try {
            AlunoDAO alunoDAO = new AlunoDAO();
            /*
             * Tratando senha
                 */
            alunoDTO.setSenha(RecursosUteis.gerarHash(alunoDTO.getSenha()));
            alunoDAO.update(alunoDTO);
        } catch (DAOException e) {
            e.printStackTrace();
        }
    }

     /*
     * Controller para trabalhar como intermediario na atualizacoes
     * de informacoes sobre o aluno
     */
    public void deletarDadosAluno(AlunoDTO alunoDTO) {
        try {
            AlunoDAO alunoDAO = new AlunoDAO();
            /*
             * Deletando usuario
             */          
            alunoDAO.deleteDadosAluno(alunoDTO);
        } catch (DAOException e) {
            e.printStackTrace();
        }
    }

    /**
     * Consultando informacoes na base de dados de acordo
     * com o filtro especificado pelo operador na janela de gerenciamento de alunos
     * @param filtro
     * @return
     */
    public Collection<AlunoDTO> consultaQuente(String filtro) {
        LinkedList<AlunoDTO> retorno = null;
        try {
            AlunoDAO alunoDAO = new AlunoDAO();
            AlunoDTO alunoDTO = new AlunoDTO();
            alunoDTO.setNome(filtro);
            /*
             * Realizando consulta Quente
             */
            retorno = (LinkedList) alunoDAO.listAlunos(alunoDTO);
        } catch (DAOException e) {
            e.printStackTrace();
        }
        return retorno;
    }

}
